GtkWidget *recent_servers_popover;
GtkWidget *recent_servers_stack;
GtkWidget *stack;
- GtkWidget *network_header_spinner;
GtkWidget *network_placeholder;
GtkWidget *network_placeholder_label;
static void populate_servers (GtkPlacesView *view);
+static gboolean gtk_places_view_get_fetching_networks (GtkPlacesView *view);
+
+static void gtk_places_view_set_fetching_networks (GtkPlacesView *view,
+ gboolean fetching_networks);
+
G_DEFINE_TYPE_WITH_PRIVATE (GtkPlacesView, gtk_places_view, GTK_TYPE_BOX)
/* GtkPlacesView properties & signals */
PROP_0,
PROP_LOCAL_ONLY,
PROP_OPEN_FLAGS,
+ PROP_FETCHING_NETWORKS,
PROP_LOADING,
LAST_PROP
};
g_value_set_boolean (value, gtk_places_view_get_loading (self));
break;
+ case PROP_FETCHING_NETWORKS:
+ g_value_set_boolean (value, gtk_places_view_get_fetching_networks (self));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
gtk_list_box_invalidate_headers (GTK_LIST_BOX (priv->listbox));
}
- if (priv->fetching_networks)
+ if (gtk_places_view_get_fetching_networks (view))
{
- gtk_spinner_start (GTK_SPINNER (priv->network_header_spinner));
/* only show a placeholder with a message if the list is empty.
* otherwise just show the spinner in the header */
if (!has_networks (view))
}
else if (!has_networks (view))
{
- gtk_spinner_stop (GTK_SPINNER (priv->network_header_spinner));
gtk_widget_show_all (priv->network_placeholder);
gtk_label_set_text (GTK_LABEL (priv->network_placeholder_label),
_("No network locations found"));
}
else
{
- gtk_spinner_stop (GTK_SPINNER (priv->network_header_spinner));
gtk_widget_hide (priv->network_placeholder);
}
}
priv = gtk_places_view_get_instance_private (view);
error = NULL;
- priv->fetching_networks = FALSE;
+ gtk_places_view_set_fetching_networks (view, FALSE);
detected_networks = g_file_enumerator_next_files_finish (G_FILE_ENUMERATOR (source_object),
res, &error);
g_cancellable_cancel (priv->networks_fetching_cancellable);
g_clear_object (&priv->networks_fetching_cancellable);
priv->networks_fetching_cancellable = g_cancellable_new ();
- priv->fetching_networks = TRUE;
+ gtk_places_view_set_fetching_networks (view, TRUE);
update_network_state (view);
g_file_enumerate_children_async (network_file,
children = gtk_container_get_children (GTK_CONTAINER (priv->listbox));
g_list_free_full (children, (GDestroyNotify) gtk_widget_destroy);
priv->network_placeholder = NULL;
- priv->network_header_spinner = NULL;
priv->loading = TRUE;
g_object_notify_by_pspec (G_OBJECT (view), properties[PROP_LOADING]);
GtkListBoxRow *before,
gpointer user_data)
{
- GtkPlacesViewPrivate *priv;
gboolean row_is_network;
gchar *text;
- priv = gtk_places_view_get_instance_private (GTK_PLACES_VIEW (user_data));
text = NULL;
row_is_network = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (row), "is-network"));
if (row_is_network)
{
GtkWidget *header_name;
+ GtkWidget *network_header_spinner;
g_object_set (label,
"margin-end", 6,
NULL);
header_name = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- priv->network_header_spinner = gtk_spinner_new ();
- g_object_set (priv->network_header_spinner,
+ network_header_spinner = gtk_spinner_new ();
+ g_object_set (network_header_spinner,
"margin-end", 12,
NULL);
+ g_object_bind_property (GTK_PLACES_VIEW (user_data),
+ "fetching-networks",
+ network_header_spinner,
+ "active",
+ G_BINDING_SYNC_CREATE);
+
gtk_container_add (GTK_CONTAINER (header_name), label);
- gtk_container_add (GTK_CONTAINER (header_name), priv->network_header_spinner);
+ gtk_container_add (GTK_CONTAINER (header_name), network_header_spinner);
gtk_container_add (GTK_CONTAINER (header), header_name);
}
else
FALSE,
G_PARAM_READABLE);
+ properties[PROP_FETCHING_NETWORKS] =
+ g_param_spec_boolean ("fetching-networks",
+ P_("Fetching networks"),
+ P_("Whether the view is fetching networks"),
+ FALSE,
+ G_PARAM_READABLE);
+
properties[PROP_OPEN_FLAGS] =
g_param_spec_flags ("open-flags",
P_("Open Flags"),
return priv->loading;
}
+static gboolean
+gtk_places_view_get_fetching_networks (GtkPlacesView *view)
+{
+ GtkPlacesViewPrivate *priv;
+
+ g_return_val_if_fail (GTK_IS_PLACES_VIEW (view), FALSE);
+
+ priv = gtk_places_view_get_instance_private (view);
+
+ return priv->fetching_networks;
+}
+
+static void
+gtk_places_view_set_fetching_networks (GtkPlacesView *view,
+ gboolean fetching_networks)
+{
+ GtkPlacesViewPrivate *priv;
+
+ g_return_if_fail (GTK_IS_PLACES_VIEW (view));
+
+ priv = gtk_places_view_get_instance_private (view);
+
+ if (priv->fetching_networks != fetching_networks)
+ {
+ priv->fetching_networks = fetching_networks;
+ g_object_notify_by_pspec (G_OBJECT (view), properties [PROP_FETCHING_NETWORKS]);
+ }
+}
+
/**
* gtk_places_view_get_local_only:
* @view: a #GtkPlacesView